import com.sun.javafx.iio.common.ImageLoaderImpl;

import java.util.*;

/**
 * @author : zzr
 * @description :
 * @date :
 */
public class Test_2 {

    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> ret = new ArrayList<>(); //创建一个List<List<Integer>>的ret来接收

        //第一行
        List<Integer> row = new ArrayList<>(); //创建一个ArrayList
        row.add(1); //给这个ArrayList添加一个元素1
        ret.add(row); //将这个ArrayList添加到List<List<Integer>>中

        //下面的是从第二行开始
        for (int i = 1; i < numRows; i++) { //注意：因为此时i是从第二行开始的，所以i = 1
            List<Integer> curRow = new ArrayList<>(); //创建第二行开始的每一行
            curRow.add(1);//这是新的一行的第一个值 -- 1

            //中间列

            //需要找到上一行
            List<Integer> prevRow = ret.get(i - 1);

            for (int j = 1; j < i; j++) { //注意：这里是j = 1 因为第一个位置已经是1
                // j < i 因为并不需要处理最后一个位置，最后一个位置还是1
                int x = prevRow.get(j) + prevRow.get(j - 1);
                curRow.add(x);
            }
            curRow.add(1); //这是新的一行的最后一个值

            ret.add(curRow);//把每一个新的一行都加到List<List<Integer>>
        }
        return ret;
    }



    public static void main7(String[] args) {
        List<List<Integer>> ret1 = new ArrayList<>();
        ret1.add(new ArrayList<>());
        ret1.get(0).add(1);

        List<Integer> ret2 = new ArrayList<>();
        ret2.add(1);
        System.out.println(ret2.get(0));
    }




        public static List<Character> fun(String str1, String str2) {
            List<Character> list = new ArrayList<>();
            //遍历str1字符，看是否存在str2字符
            for (int i = 0; i < str1.length(); i++) {
                char ch = str1.charAt(i);
                if(!str2.contains(ch + "")) {
                    list.add(ch);
                }
            }
            return list;
        }

    public static void main6(String[] args) {
        String str1 = "welcome to cvte";
        String str2 = "come";
        System.out.println(fun(str1, str2));
        System.out.println("===============================");

        List<Character> list = fun(str1,str2);
        //1.for循环 + 下标
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i));
        }
        System.out.println();
        System.out.println("===============================");
        //2.foreach
        for(Character character : list) {
            System.out.print(character);
        }
        System.out.println();
        System.out.println("===============================");
        //3.迭代器
        Iterator<Character> it = list.iterator();
        while(it.hasNext()) {
            System.out.print(it.next());
        }
    }

    public static void main5(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i) + " ");
        }
        System.out.println();
        System.out.println("=============================");

        for(Integer integer:list) {
            System.out.print(integer + " ");
        }
        System.out.println();
        System.out.println("=============================");

        Iterator<Integer> it = list.iterator();
        while(it.hasNext()) {
            System.out.print(it.next() + " ");
        }
        System.out.println();
        System.out.println("=============================");

        ListIterator<Integer> it2 = list.listIterator();
        while(it2.hasNext()) {
            System.out.print(it2.next() + " ");
        }
        System.out.println();
        System.out.println("=============================");

        ListIterator<Integer> it3 = list.listIterator(list.size());
        while(it3.hasPrevious()) {
            System.out.print(it3.previous() + " ");
        }
    }





    public static void main4(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(6);
        List<Integer> list1 = list.subList(1,4);   // [1,4)
        list1.set(0,999);
        System.out.println(list1);
        System.out.println(list);//一般情况下，能够直接通过System.out.print输出
        // 引用指向对象当中的内容的时候 此时一定重写了toString方法
    }
    public static void main3(String[] args) {
        ArrayList<Integer> list2 = new ArrayList<>(); //无参的构造方法
        list2.add(1);
        list2.add(2);
        list2.add(3);
        list2.add(0,999);
        System.out.println(list2);

        ArrayList<Integer> list1 = new ArrayList<>(15); //指定顺序表的初始容量

        List<Integer> list3_1 = new LinkedList<>();
        list3_1.add(1);
        list3_1.add(2);
        list3_1.add(3);

        List<Integer> list3 = new ArrayList<>(list3_1); //利用其他Collection构建ArrayList，注意，这里new了一个ArrayList然后赋值给List的list3
                                                  //因为ArrayList实现了List接口，所以可以赋过去
        list3.add(999);
        System.out.println(list3);
    }

    public static void main1(String[] args) {
        MyArrayList myArrayList = new MyArrayList();
        myArrayList.add(0);
        myArrayList.add(1);
        myArrayList.add(2);
        myArrayList.add(3);
        myArrayList.add(4);
//        myArrayList.add(0,199);
//        myArrayList.add(-5,199);
        System.out.println(myArrayList.contains(99)); //false
        System.out.println(myArrayList.indexOf(99));  //-1
        myArrayList.display();
    }
}
